package com.wicket.okrcomponent.integration.dto;

import com.wicket.okrcomponent.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;
import javax.validation.constraints.NotNull;
import lombok.Data;

/**
 * @desc DocumentDto
 * @使用场景
 */
@Data
public class DocumentDto extends BaseDto implements Serializable {

  /**
   * 文档ID
   */
  @ApiModelProperty("文档ID")
  private String unstructuredDataId;

  /**
   * 文档类型 FILE:文档 MEDIA_CONTENT:媒体内容 OTHER:其它
   */
  @ApiModelProperty("文档类型")
  private String unstructuredDataType;

  /**
   * 文档明细类型 WORD:WORD文档 EXCEL:EXCEL文档 PDF:PDF文档
   */
  @ApiModelProperty("文档明细类型")
  private String unstructuredDataDetailType;

  /**
   * 是否支持预览 TRUE:是 FALSE:否
   */
  @ApiModelProperty("是否支持预览")
  private String isSupportPreview;

  /**
   * 是否个人网盘文件 TRUE:是 FALSE:否
   */
  @ApiModelProperty("是否个人网盘文件")
  private String isUserUpload;

  /**
   * 文件夹ID
   */
  @ApiModelProperty("文件夹ID")
  private String unstructuredDataFolderId;

  /**
   * 文件相对路径地址
   */
  @ApiModelProperty("文件相对路径地址")
  private String fileRelativePathAccess;

  /**
   * 文件全路径地址
   */
  @ApiModelProperty("文件全路径地址")
  private String fileRelativeAllPathAccess;

  /**
   * 文档后缀
   */
  @ApiModelProperty("文档后缀")
  private String postfix;

  /**
   * 文件大小
   */
  @ApiModelProperty("文件大小")
  private String fileSize;

  /**
   * 文档编号
   */
  @ApiModelProperty("文档编号")
  private String unstructuredDataNumber;

  /**
   * 文档名称
   */
  @ApiModelProperty("文档名称")
  private String unstructuredDataName;

  /**
   * 文档简介
   */
  @ApiModelProperty("文档简介")
  private String unstructuredDataDesc;

  /**
   * 操作人就职记录ID
   */
  @ApiModelProperty("操作人就职记录ID")
  private String operationInductionId;

  /**
   * 操作时间
   */
  @ApiModelProperty("操作时间")
  private Date operateTime;

  /**
   * 排序
   */
  @ApiModelProperty("排序")
  private Long orderNumber;

  /**
   * 是否是网盘引用关系 TRUE:是 FALSE:否
   */
  @ApiModelProperty("是否是网盘引用关系")
  private String isNetworkReference;

  /**
   * 来源文档关系ID
   */
  @ApiModelProperty("来源文档关系ID")
  private String sourceRelationshipId;

  /**
   * 关系类型编码
   */
  @NotNull(message = "关系类型编码不能为空")
  @ApiModelProperty("关系类型编码")
  private String relationshipType;

  /**
   * 创建时间
   */
  @ApiModelProperty("创建时间")
  private Date createTime;

  /**
   * 创建人就职记录ID
   */
  @ApiModelProperty("创建人就职记录ID")
  private String createInductionId;

  /**
   * 文档关系ID
   */
  @ApiModelProperty("文档关系ID")
  private String unstructuredDataRelationshipId;

  /**
   * 归属内容表主键ID
   */
  @ApiModelProperty("归属内容表主键ID")
  private String ownEntityId;

  /**
   * 归属父内容表主键ID
   */
  @ApiModelProperty("归属父内容表主键ID")
  private String ownParentContentId;

  /**
   * 主题内容ID
   */
  @ApiModelProperty("主题内容ID")
  private String themeContentId;

  /**
   * 冗余版权归属对象类型 ORGANIZATION:组织 DEPARTMENT:部门 PERSONAL:个人
   */
  @ApiModelProperty("冗余版权归属对象类型")
  private String copyrightObjectTypeCode;

  /**
   * 冗余版权归属对象ID
   */
  @ApiModelProperty("冗余版权归属对象ID")
  private String copyrightObjectId;

  /**
   * 文档名称别名
   */
  @ApiModelProperty("文档名称别名")
  private String unstructuredDataAliasName;

  @Override
  public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    if (!super.equals(o)) return false;
    DocumentDto that = (DocumentDto) o;
    return (
      unstructuredDataId == that.unstructuredDataId &&
      unstructuredDataType == that.unstructuredDataType &&
      unstructuredDataDetailType == that.unstructuredDataDetailType &&
      isSupportPreview == that.isSupportPreview &&
      isUserUpload == that.isUserUpload &&
      unstructuredDataFolderId == that.unstructuredDataFolderId &&
      fileRelativePathAccess == that.fileRelativePathAccess &&
      fileRelativeAllPathAccess == that.fileRelativeAllPathAccess &&
      postfix == that.postfix &&
      fileSize == that.fileSize &&
      unstructuredDataNumber == that.unstructuredDataNumber &&
      unstructuredDataName == that.unstructuredDataName &&
      unstructuredDataDesc == that.unstructuredDataDesc &&
      operationInductionId == that.operationInductionId &&
      operateTime == that.operateTime &&
      orderNumber == that.orderNumber &&
      isNetworkReference == that.isNetworkReference &&
      sourceRelationshipId == that.sourceRelationshipId &&
      relationshipType == that.relationshipType &&
      createTime == that.createTime &&
      createInductionId == that.createInductionId &&
      unstructuredDataRelationshipId == that.unstructuredDataRelationshipId &&
      ownEntityId == that.ownEntityId &&
      ownParentContentId == that.ownParentContentId &&
      themeContentId == that.themeContentId &&
      copyrightObjectTypeCode == that.copyrightObjectTypeCode &&
      copyrightObjectId == that.copyrightObjectId &&
      unstructuredDataAliasName == that.unstructuredDataAliasName
    );
  }

  @Override
  public int hashCode() {
    return Objects.hash(
      super.hashCode(),
      unstructuredDataId,
      unstructuredDataType,
      unstructuredDataDetailType,
      isSupportPreview,
      isUserUpload,
      unstructuredDataFolderId,
      fileRelativePathAccess,
      fileRelativeAllPathAccess,
      postfix,
      fileSize,
      unstructuredDataNumber,
      unstructuredDataName,
      unstructuredDataDesc,
      operationInductionId,
      operateTime,
      orderNumber,
      isNetworkReference,
      sourceRelationshipId,
      relationshipType,
      createTime,
      createInductionId,
      unstructuredDataRelationshipId,
      ownEntityId,
      ownParentContentId,
      themeContentId,
      copyrightObjectTypeCode,
      copyrightObjectId,
      unstructuredDataAliasName
    );
  }

}
